package com.gblw.rjkf.pj.utils.aspect;

import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class SignAspect {

//    // 定义切点
//    @Pointcut("within(@org.springframework.stereotype.Controller *) || within(@org.springframework.web.bind.annotation.RestController *)")
//    public void signPointcut() {
//    }
//
//    // 环绕通知
//    @Around("signPointcut()")
//    public Object around(ProceedingJoinPoint point) throws Throwable {
//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        HttpServletRequest request = attributes.getRequest();
//        // 获取请求参数中的sign、time、token
//        String sign = request.getHeader("sign");
//        String time = request.getHeader("time");
//        String secretKey = request.getHeader("secretKey");
//        String publicKey = request.getHeader("publicKey");
//        String token = "";
//        if (request.getHeader("satoken") != null && !request.getHeader("satoken").isEmpty()) {
//            token=request.getHeader("satoken");
//        }
//        if (SaSecureUtil.sha512(time + secretKey + publicKey + token).equals(sign)) {
//            // 签名验证通过，继续执行原有方法
//            return point.proceed();
//        } else {
//            throw new RuntimeException("signError");
//        }
//
//
//    }
//    public static void main(String[] args) {
//        try {
//            // 创建KeyPairGenerator实例，指定算法为EC（椭圆曲线）
//            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");
//
//            // 初始化KeyPairGenerator，指定密钥长度为256位
//            keyPairGenerator.initialize(256);
//
//            // 生成密钥对
//            KeyPair keyPair = keyPairGenerator.generateKeyPair();
//
//            // 获取私钥和公钥
//            PrivateKey privateKey = keyPair.getPrivate();
//            PublicKey publicKey = keyPair.getPublic();
//
//            // 将私钥和公钥转换为Base64字符串以便于存储和传输
//            String secretKeyBase64 = Base64.getEncoder().encodeToString(privateKey.getEncoded());
//            String publicKeyBase64 = Base64.getEncoder().encodeToString(publicKey.getEncoded());
//
//            // 输出生成的密钥
//            System.out.println("256-bit SecretKey (Base64): " + secretKeyBase64);
//            System.out.println("256-bit PublicKey (Base64): " + publicKeyBase64);
//
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//        }
//}
}
